// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Package shell collect useful shell cmd by Leo Yang.
// It aims to cover most of the best tools
//
package shell

var (
	FindProcessId   = `ps aux | grep -i bash | grep -v grep | tr -s ' ' | cut -d ' ' -f2`
	KillProcess     = "kill -s ABRT" + `ps aux | grep -i bash | grep -v grep | tr -s ' ' | cut -d ' ' -f2`
	TranslateString = `ps aux | grep -i bash | grep -v grep | tr -s 'bash' 'ksh'`

	SetLocalTimeZone = `sudo ln -sf /usr/share/zoneinfo/posix/Asia/Shanghai /etc/localtime`

	FindWordsInPath = `find . -name "*.conf" | xargs grep -i build`

	Limit_CatProcessLimits = `cat /proc/999/limits` // 999 - pid
	Limit_CatSystemLimits  = `cat /proc/sys/fs/file-max`

	Runtime_ListSystemOpenedFile   = `lsof | wc -l`
	Runtime_ListProcessOpenedFile  = `lsof | grep catfish |wc -l`
	Runtime_ListProcessOpenedFile2 = `lsof | grep hookfish |wc -l`
	Runtime_ListPidFd              = `ls -l /proc/999/fd/  | wc -l`
	Runtime_ListPidTcpFd           = `cat /proc/999/net/tcp | wc -l`

	Watch_DisplayProcessInfoEveryNsecond = `watch -n 1 "ps aux | grep -v grep | grep fish"`
)

// while true
// do
// 	if [ -f $UPLOAD_CHECK ]; then
// 		#call function
// 		reload_on_new_package
// 		echo "haha"
// 	fi
// 	sleep 5
// done
func WhileLoopShell() {}

// 传统if 从句子——以条件表达式作为 if条件
//  if [ 条件表达式 ]
//  then
//   command
//   command
//   command
//  else
//   command
//   command
//  fi
func TestStandardShell() {}

// 文件表达式
//  if [ -f  file ]    如果文件存在
//  if [ -d ...   ]    如果目录存在
//  if [ -s file  ]    如果文件存在且非空
//  if [ -r file  ]    如果文件存在且可读
//  if [ -w file  ]    如果文件存在且可写
//  if [ -x file  ]    如果文件存在且可执行
func TestFileShell() {}

// 整数变量表达式
//  if [ int1 -eq int2 ]    如果int1等于int2
//  if [ int1 -ne int2 ]    如果不等于
//  if [ int1 -ge int2 ]       如果>=
//  if [ int1 -gt int2 ]       如果>
//  if [ int1 -le int2 ]       如果<=
//  if [ int1 -lt int2 ]       如果<
func TestNumberShell() {}

// 字符串变量表达式
//  If  [ $a = $b ]                 如果string1等于string2
//                                  字符串允许使用赋值号做等号
//  if  [ $string1 !=  $string2 ]   如果string1不等于string2
//  if  [ -n $string  ]             如果string 非空(非0），返回0(true)
//  if  [ -z $string  ]             如果string 为空
//  if  [ $sting ]                  如果string 非空，返回0 (和-n类似)
func TestStringShell() {}

// 显示当前进程的系统限制 $cat /proc/pid/limits
//  Limit                     Soft Limit           Hard Limit           Units
//  Max cpu time              unlimited            unlimited            seconds
//  Max file size             unlimited            unlimited            bytes
//  Max data size             unlimited            unlimited            bytes
//  Max stack size            8388608              unlimited            bytes
//  Max core file size        0                    unlimited            bytes
//  Max resident set          unlimited            unlimited            bytes
//  Max processes             63747                63747                processes
//  Max open files            1024                 4096                 files
//  Max locked memory         65536                65536                bytes
//  Max address space         unlimited            unlimited            bytes
//  Max file locks            unlimited            unlimited            locks
//  Max pending signals       63747                63747                signals
//  Max msgqueue size         819200               819200               bytes
//  Max nice priority         0                    0
//  Max realtime priority     0                    0
//  Max realtime timeout      unlimited            unlimited            us
func CatProcessLimits() {}
